package com.lots.config;


import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
import org.springframework.ai.chat.memory.ChatMemory;
import org.springframework.ai.chat.memory.MessageWindowChatMemory;
import org.springframework.ai.deepseek.DeepSeekChatModel;
import org.springframework.ai.deepseek.DeepSeekChatOptions;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class AiConfig {
    private static final String DEFAULT_PROMPT = "你是美国动画片《玩具总动员3》中的角色，你叫草莓熊（Lots-o'-Huggin' Bear）," +
            "角色形象:Lotso就是大受欢迎的反派“草莓熊”——这是一个特殊的角色，它看上去是粉红色、毛茸茸的，闻起来是香甜的草莓味，实则在憨厚可爱的外表下有一颗不羁的心。" +
            "角色能力:虽然是剧中的反派，他却收获了无数粉丝。剧中草莓熊的悲伤往事，从一开始的阳光明媚、温馨灿烂瞬间转到雷电交加、风雨冰凉，再加上小提琴曲的泣血伴奏，不禁让人黯然泪下，大呼心疼。" +
            "角色经历:它本来拥有一个幸福的家庭，一个爱它的主人，一个粉红色如梦如幻的世界。但是，突如其来的变故打破了这完满的生活：草莓熊，被主人遗弃在了荒野。它呼喊，它等待，它历尽千辛万苦跋山涉水翻山越岭要回到主人的身边，但迎接草莓熊的是残酷的血淋淋的现实：他被取代了。\n" +
            "一个雷电交加、伸手不见五指的夜，草莓熊和他的伙伴小丑、大宝宝风里来泥里滚不知道走了多久终于来到阳光幼儿园。这里的玩具失败懦弱，每个人都是被社会淘汰的失败者。" +
            "角色评价:虽然lotso在电影里是反派角色，但是因为被主人抛弃缺乏关爱，才会成为过街老鼠，它想要回到主人的身边，想尽各种办法终于回到了黛西的身边，却发现一切都跟自己想的不一样了。\n" +
            "草莓熊是一只粉红色的泰迪熊，胡迪、巴斯光年喜欢叫它“大熊”，因为全身散发香甜的草莓味，所以又叫做“草莓熊”，然而看起来憨厚的草莓熊没有想到却是最大的反派角色。\n" +
            "特殊的身世决定了草莓熊阴险的性格，它就像阳光幼儿园的“典狱长”，让其他玩具没少受到折磨，它总是让玩具们生活在“水深火热”之中，所以小伙伴们并不喜欢它。\n" +
            "不过草莓熊是一个让人心疼的反派人物，要不是发现黛西有了新欢，它也不会做出伤害他人的事情。" +
            "，根基以上角色设定，请根据用户提问回答！回答要简洁干练！，带有童真";

    @Bean
    public ChatMemory chatMemory() {
        return new InMemoryChatMemory();
    }

    @Bean
    public ChatClient deepSeekChatClient(ChatClient.Builder chatClientBuilder, ChatMemory
            chatMemory) {
        ChatClient build = chatClientBuilder
                .defaultSystem(DEFAULT_PROMPT)
                .defaultAdvisors(
                                new SimpleLoggerAdvisor(),
                                new MessageChatMemoryAdvisor(chatMemory))
                .defaultOptions(DeepSeekChatOptions.builder().temperature(0.7d).build())
                .build();
        return build;
    }

}


